Мастерская Delphi программирования. | |||||||||||||||
| |||||||||||||||
Кнопка в заголовке окна
пример: capbtn.zip Обычно окно приложения имеют 3 кнопки в своем заголовке, свернуть, развернуть и закрыть. На этой страничке будет рассказано, как в заголовок окна добавить свою кнопку. Если вас это заинтересовало, начнем. После недолгого капания в недрах windows API удалось добиться желаемого результата. Вот что получилось: Вся основная работа по рисованию кнопки в заголовке окна происходит в процедуре DrawBtn. Рассмотрим код подробней.
Переменная WDc содержит контекст устройства окна, полученной функцией GetWindowsDc. Он понадобится для рисования окна. С помощью нескольких вызовов функции GetSystemMetrics узнаем размер стандартной кнопки заголовка окна. Затем вычисляем положение и размер прямоугольника, в котором будет рисоваться кнопка. И самое основное вызываем функцию DrawFrameControl. Эта функция рисует стандартный Control заданного типа и стиля. Используя тип DFC_BUTTON рисуем кнопку. Задавая стиль DFCS_BUTTONPUSH рисуется кнопка в нормальном состоянии, если задать стиль DFCS_BUTTONPUSH or DFCS_PUSHED рисуется кнопка в нажатом состоянии. Переменная Press содержит состояние в котором следует рисовать кнопку. В конце работы освобождаем контекст. Теперь о самом неприятном. Чтобы все это заработало так как надо необходимо обработать кучу сообщений которое windows посылает приложению.Куча это, конечно, громко сказано, но у меня получилось 7, плюс 1 определенное мной для отслеживания Click. Вот эти сообщения:
PS: Можно обьединить кнопку в заголовке окна и пункт системного меню, описаный на страничке манипуляции с системным меню пример: capbtn.zip | |||||||||||||||
| |||||||||||||||
http://www.valler.narod.ru |